package com.tjl.warehouse.config;

import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**
 * 验证码工具kaptcha的配置类
 */
@Configuration
public class CaptchaConfig {

    /**
     * 指定验证码的生成规则
     * @return 通过注解来封装验证码规则，然后再将验证码的规则传递出去，让其他包下面的类，按照此规则来生成验证码
     */
    @Bean(name = "captchaProducer")
    public DefaultKaptcha getKaptchaBean(){
        //创建需要返回的对象
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        //创建属性集对象（对.properties配置文件的封装）
        Properties properties = new Properties();
        //验证码图片是否有边框，默认值为true,也可以自己设置其值yes,no
        properties.setProperty("kaptcha.border","yes");
        //验证码图片边框的颜色                             rgb
        properties.setProperty("kaptcha.border.color","105,179,90");
        //验证码文本字符的颜色
        properties.setProperty("kaptcha.textproducer.font.color","blue");
        //验证码图片的宽度
        properties.setProperty("kaptcha.image.width","120");
        //验证码图片的高度
        properties.setProperty("kaptcha.image.height","40");
        //验证码文本字符的大小
        properties.setProperty("kaptcha.textproducer.font.size","32");
        //将验证码进行本地的缓存  session/cookie
        properties.setProperty("kaptcha.session.key","kaptchaCode");
        //验证码文本字符的间距
        properties.setProperty("kaptcha.textproducer.char.space","4");
        //验证码文本字符的长度
        properties.setProperty("kaptcha.textproducer.char.length","4");
        //验证码文本字体的样式
        properties.setProperty("kaptcha.textproducer.font.names","Arial,Courier");
        //验证码噪点的颜色
        properties.setProperty("kaptcha.noise.color","gray");

        //创建配置对象
        Config config = new Config(properties);
        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }

}
